import {
  BoxGeometry,
  Mesh,
  MeshStandardMaterial,
  MathUtils,
  TextureLoader,
} from "three";

/**
 * @description - 创建材料
 * @returns {MeshStandardMaterial}
 */
const createMaterial = () => {
  // 创建一个TextureLoader
  const textureLoader = new TextureLoader();
  // 加载一个texture
  const texture = textureLoader.load("/textures/brick_diffuse.jpg");
  // 创建一个高质量、通用、物理精确的材料
  const material = new MeshStandardMaterial({ map: texture });
  return material;
};

/**
 * @description - 创建立方体
 * @returns {Mesh} - 网格实例
 */

export const createCude = () => {
  // 创建边长为2的几何体（就是边长2米）
  const geometry = new BoxGeometry(2, 2, 2);
  // 创建一个高质量、通用、物理精确的材料 设置颜色为紫色
  const material = createMaterial();
  // 创建一个网格添加几何体和材质
  const cube = new Mesh(geometry, material);
  // 旋转立方体
  cube.rotation.set(-0.5, -0.1, 0.8);
  const radiansPerSecond = MathUtils.degToRad(30);
  // 添加更新动画方法tick
  cube.tick = (delta) => {
    const radian = radiansPerSecond * delta;
    cube.rotation.z += radian;
    cube.rotation.x += radian;
    cube.rotation.y += radian;
  };
  return cube;
};
